/**
 * @description profile路由的控制器
 * @author 印明帝
 */

const { SuccessModel, ErrorModel } = require('../model/ResModel')
const { createBlogFailInfo,getBlogFailInfo } = require('../model/errorInfo')
const { getBlogs } = require('../service/blog')
const { getUserInfo } = require('../service/user')
const { getUsersByFollower,getFollowersByUser } = require('../service/userRelation')

/**
 * 获取个人信息，博客和粉丝关注人
 */
async function getProfile({ctx,id,index}){
  // 已登录用户的信息
  const myUserInfo = ctx.session.userInfo
  const myUserId = myUserInfo.id
  let userData = null

  // 如果index不存在就是查询首页，把index改为1
  if(!index) {
    index = 0
  }
  // 如果是currentId说明查询的用户是登录的用户,或者id和sessionid一样
  let isMe = id == myUserId || id === 'currentId'
  if(isMe) {
    id = myUserId
    // 用户信息等于session里的信息
    userData = myUserInfo
    userData.isMe = isMe
  }else{
    // 调用函数获取profile页面的用户信息
    id = parseInt(id)
    userData = await getUserInfo(id)
  }
  // 把查询id，index转换成number类型
  id = parseInt(id)
  index = parseInt(index)
  // 调用函数获取profile页面的博客列表
  let blogData = await getBlogs({id,index})
  // 获取粉丝列表
  let fansData = await getUsersByFollower(id)
  // userData中amIFollow判断我是不是他的粉丝
  userData.amIFollow = fansData.userList.some((user) => user.id === myUserInfo.id)
  // 关注人的列表
  let followerData = await getFollowersByUser(id)
  let result = {
    blogData,
    userData,
    fansData,
    followerData
  }

  if(result) {
    return new SuccessModel(result)
  }
  return new ErrorModel(getBlogFailInfo)
}

module.exports = {
  getProfile
}